
function logged(value, context) {
  console.log(context, 'context')
  if (context.kind === 'getter' || context.kind === 'setter') { // 装饰的是访问器
    return function(...args) { // 返回一个函数 用来修改访问器
      console.log('重写的逻辑', context.name)
      // 使用 apply 来调用函数 同时指定 this 为调用函数时的对象
      const result = value.apply(this , args)
      return result
    }
  }
}

class C {
  @logged
  set x(args) {}

  @logged
  get x() {
    return 2
  }
}

let clazz = new C()
clazz.x = 1
console.log(clazz.x)

export {} // 使用 export 该文件独立成为一个模块